Track Working Time and Pauses

工作流概述

这是一个包含30个节点的复杂工作流,主要用于自动化处理各种任务。

工作流源代码

下载
{
  "id": "pdgNdag49lwoTxUP",
  "meta": {
    "instanceId": "46264913bc099c31e7222b2cfd112772e1c7867192afd7716e58254079b3333f",
    "templateCredsSetupCompleted": true
  },
  "name": "Track Working Time and Pauses",
  "tags": [],
  "nodes": [
    {
      "id": "1ae951f1-acfa-4bd2-800e-22c7628e862d",
      "name": "Create new page",
      "type": "n8n-nodes-base.notion",
      "position": [
        1260,
        -120
      ],
      "parameters": {
        "title": "Tracked Time via n8n",
        "options": {
          "icon": "🤖"
        },
        "resource": "databasePage",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "1117f2f5-baf9-8054-b33b-efb4d8a3c7ab",
          "cachedResultUrl": "https://www.notion.so/1117f2f5baf98054b33befb4d8a3c7ab",
          "cachedResultName": "Time Tracker"
        },
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Start|date",
              "date": "={{ $now }}"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "id": "03mmrqQX1rffebZp",
          "name": "Notion David"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "490d1893-3828-4df6-8c0a-0a1476fc8727",
      "name": "Update page with end date",
      "type": "n8n-nodes-base.notion",
      "position": [
        1560,
        780
      ],
      "parameters": {
        "pageId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "End|date",
              "date": "={{ $now }}"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "id": "03mmrqQX1rffebZp",
          "name": "Notion David"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "daef6212-b852-45ba-8100-103e231837cb",
      "name": "If pause_in_minuten is empty",
      "type": "n8n-nodes-base.if",
      "position": [
        1540,
        220
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "6ec8bb5f-d860-47a8-b631-c9535716ddc5",
              "operator": {
                "type": "number",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.property_break }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "ef724c03-885e-4066-b776-a84fe001a14a",
      "name": "If page responded",
      "type": "n8n-nodes-base.if",
      "position": [
        1260,
        260
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2130bdb4-54be-4d43-90bb-36f57826f2dc",
              "operator": {
                "type": "object",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "aa51a557-7eec-410a-9cdd-1dac3e2e104d",
      "name": "If page exist",
      "type": "n8n-nodes-base.if",
      "position": [
        980,
        -200
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2130bdb4-54be-4d43-90bb-36f57826f2dc",
              "operator": {
                "type": "object",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "738aa465-bd04-4c4e-9846-02ae66139789",
      "name": "If page exist1",
      "type": "n8n-nodes-base.if",
      "position": [
        980,
        840
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2130bdb4-54be-4d43-90bb-36f57826f2dc",
              "operator": {
                "type": "object",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "4547c3fd-6373-401a-9d33-caa1e9f5545e",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        1260,
        840
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "6ec8bb5f-d860-47a8-b631-c9535716ddc5",
              "operator": {
                "type": "object",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.property_end }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "70424282-dcce-4f1a-aba0-af0e7947a4fd",
      "name": "Set Break Duration",
      "type": "n8n-nodes-base.set",
      "position": [
        740,
        260
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "9261c98a-3099-4409-b697-8c28f6ec0c06",
              "name": "break_duration",
              "type": "number",
              "value": "={{ $json.body.duration }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ad1bd9ce-d7cc-4359-954b-8976f593c272",
      "name": "Update break duration for current day",
      "type": "n8n-nodes-base.notion",
      "position": [
        1820,
        320
      ],
      "parameters": {
        "pageId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Break|number",
              "numberValue": "={{ $('Set Break Duration').item.json.break_duration }}"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "id": "03mmrqQX1rffebZp",
          "name": "Notion David"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "622eddf9-f719-412f-a07e-45e4d8390798",
      "name": "Set break duration for current day",
      "type": "n8n-nodes-base.notion",
      "position": [
        1820,
        140
      ],
      "parameters": {
        "pageId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "options": {},
        "resource": "databasePage",
        "operation": "update",
        "propertiesUi": {
          "propertyValues": [
            {
              "key": "Break|number",
              "numberValue": "={{ $('Set Break Duration').item.json.break_duration }}"
            }
          ]
        }
      },
      "credentials": {
        "notionApi": {
          "id": "03mmrqQX1rffebZp",
          "name": "Notion David"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "29a96903-43f4-439d-9d35-95d557f7c544",
      "name": "Get notion page by date",
      "type": "n8n-nodes-base.notion",
      "position": [
        980,
        260
      ],
      "parameters": {
        "limit": 1,
        "filters": {
          "conditions": [
            {
              "key": "Date|formula",
              "condition": "equals",
              "textValue": "={{ $now.format('dd.MM.yyyy') }}",
              "returnType": "text"
            }
          ]
        },
        "options": {},
        "resource": "databasePage",
        "operation": "getAll",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "1117f2f5-baf9-8054-b33b-efb4d8a3c7ab",
          "cachedResultUrl": "https://www.notion.so/1117f2f5baf98054b33befb4d8a3c7ab",
          "cachedResultName": "Time Tracker"
        },
        "filterType": "manual"
      },
      "credentials": {
        "notionApi": {
          "id": "03mmrqQX1rffebZp",
          "name": "Notion David"
        }
      },
      "typeVersion": 2.2,
      "alwaysOutputData": true
    },
    {
      "id": "bca3aff3-2d7d-4cc0-8842-5de6db67fccd",
      "name": "Set Message - End time already tracked",
      "type": "n8n-nodes-base.set",
      "position": [
        2080,
        960
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "419d7570-d1ce-44b1-814c-7757da92a188",
              "name": "message",
              "type": "string",
              "value": "End time already tracked."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "a774ac50-49f3-420b-96c5-e97f46857f02",
      "name": "Set Message - End time tracked",
      "type": "n8n-nodes-base.set",
      "position": [
        2080,
        780
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "419d7570-d1ce-44b1-814c-7757da92a188",
              "name": "message",
              "type": "string",
              "value": "End Time Tracked!"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f50f5fc4-cf29-406b-940f-e8294c459b7f",
      "name": "Set Message - Start time not yet tracked",
      "type": "n8n-nodes-base.set",
      "position": [
        2080,
        1140
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "419d7570-d1ce-44b1-814c-7757da92a188",
              "name": "message",
              "type": "string",
              "value": "Today's start time not yet tracked!"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "0450fc1d-9c3b-4af6-b5a4-52dc971a1a2e",
      "name": "Set Message - Start not yet tracked",
      "type": "n8n-nodes-base.set",
      "position": [
        2080,
        520
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "419d7570-d1ce-44b1-814c-7757da92a188",
              "name": "message",
              "type": "string",
              "value": "Today's start time not yet tracked!"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "fa1855df-e3b5-4052-b26a-7be840bcaf0c",
      "name": "Set Message - Break time tracked",
      "type": "n8n-nodes-base.set",
      "position": [
        2080,
        140
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "419d7570-d1ce-44b1-814c-7757da92a188",
              "name": "message",
              "type": "string",
              "value": "=Tracked {{ $('Set Break Duration').item.json.break_duration }} minutes as break time."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "3ba94d34-18e8-49d8-8924-4837d815e183",
      "name": "Set Message - Break time updated",
      "type": "n8n-nodes-base.set",
      "position": [
        2080,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "419d7570-d1ce-44b1-814c-7757da92a188",
              "name": "message",
              "type": "string",
              "value": "=Updated break time to {{ $('Set Break Duration').item.json.break_duration }} minutes."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "42465160-7eec-43ed-93ad-1d73745911a0",
      "name": "Set Message - Start time already tracked",
      "type": "n8n-nodes-base.set",
      "position": [
        2080,
        -300
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "419d7570-d1ce-44b1-814c-7757da92a188",
              "name": "message",
              "type": "string",
              "value": "Start time already tracked."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "8d35a443-f8ef-40fd-b7a0-8933a7a38b27",
      "name": "Set Message - Start time already tracked1",
      "type": "n8n-nodes-base.set",
      "position": [
        2080,
        -120
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "419d7570-d1ce-44b1-814c-7757da92a188",
              "name": "message",
              "type": "string",
              "value": "Start time tracked."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ee6e5e70-1d27-4edc-88d8-74b44611df39",
      "name": "Get notion page with todays date",
      "type": "n8n-nodes-base.notion",
      "position": [
        740,
        -200
      ],
      "parameters": {
        "limit": 1,
        "filters": {
          "conditions": [
            {
              "key": "Date|formula",
              "condition": "equals",
              "textValue": "={{ $now.format('dd.MM.yyyy') }}",
              "returnType": "text"
            }
          ]
        },
        "options": {},
        "resource": "databasePage",
        "operation": "getAll",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "1117f2f5-baf9-8054-b33b-efb4d8a3c7ab",
          "cachedResultUrl": "https://www.notion.so/1117f2f5baf98054b33befb4d8a3c7ab",
          "cachedResultName": "Time Tracker"
        },
        "filterType": "manual"
      },
      "credentials": {
        "notionApi": {
          "id": "03mmrqQX1rffebZp",
          "name": "Notion David"
        }
      },
      "typeVersion": 2.2,
      "alwaysOutputData": true
    },
    {
      "id": "875f1969-4958-4450-87a5-aad1f65b3a9d",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        260,
        260
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Start",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.body.method }}",
                    "rightValue": "start"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Break",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "6ddd1f12-a0d8-42df-9776-dff0f44ba82c",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.body.method }}",
                    "rightValue": "break"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "End",
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "61550dac-65a2-4e4b-99a8-4df4a357cec0",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.body.method }}",
                    "rightValue": "end"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.1
    },
    {
      "id": "ab59018e-a41c-4c48-9aa7-33d123cb2215",
      "name": "Get notion page with todays date1",
      "type": "n8n-nodes-base.notion",
      "position": [
        740,
        840
      ],
      "parameters": {
        "limit": 1,
        "filters": {
          "conditions": [
            {
              "key": "Date|formula",
              "condition": "equals",
              "textValue": "={{ $now.format('dd.MM.yyyy') }}",
              "returnType": "text"
            }
          ]
        },
        "options": {},
        "resource": "databasePage",
        "operation": "getAll",
        "databaseId": {
          "__rl": true,
          "mode": "list",
          "value": "1117f2f5-baf9-8054-b33b-efb4d8a3c7ab",
          "cachedResultUrl": "https://www.notion.so/1117f2f5baf98054b33befb4d8a3c7ab",
          "cachedResultName": "Time Tracker"
        },
        "filterType": "manual"
      },
      "credentials": {
        "notionApi": {
          "id": "03mmrqQX1rffebZp",
          "name": "Notion David"
        }
      },
      "typeVersion": 2.2,
      "alwaysOutputData": true
    },
    {
      "id": "8cbdbe7f-3c32-48bb-bce6-80b918a7c31e",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        -400
      ],
      "parameters": {
        "width": 2127.3212174343475,
        "height": 469.85870733996774,
        "content": "## Track start time"
      },
      "typeVersion": 1
    },
    {
      "id": "e930da00-916b-4767-a34e-b985d97090ca",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        108.01971369783018
      ],
      "parameters": {
        "width": 2127.3212174343475,
        "height": 596.8497421429678,
        "content": "## Track break duration"
      },
      "typeVersion": 1
    },
    {
      "id": "6b77fcde-e3ed-4cfa-bd89-9d1cc6660591",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        740
      ],
      "parameters": {
        "width": 2127.3212174343475,
        "height": 627.9984865286092,
        "content": "## Track end time"
      },
      "typeVersion": 1
    },
    {
      "id": "85b40d37-3a55-4346-8c94-60eb2f8b6dba",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -104.58827842609037,
        -400
      ],
      "parameters": {
        "color": 4,
        "width": 538.9177312302156,
        "height": 1760.750302860566,
        "content": "## API Endpoint Trigger"
      },
      "typeVersion": 1
    },
    {
      "id": "c09f93f1-a2c0-4146-8853-5283bd419a73",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -102.50502117110727,
        -680
      ],
      "parameters": {
        "color": 6,
        "width": 534.5813587043364,
        "height": 247.95862766773985,
        "content": "## Setup instructions
Visit our [Unitize Documents](https://docs.unitize.de) to create a copy of the Time Tracker database as well as download the iOS Shortcut."
      },
      "typeVersion": 1
    },
    {
      "id": "bfe988d1-81c5-4c70-affd-220cfc5016da",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        2780,
        320
      ],
      "parameters": {
        "options": {},
        "respondWith": "text",
        "responseBody": "={{ $json.message }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "585efbae-ec10-4ef4-90a0-7bad55b4a150",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2640,
        -400
      ],
      "parameters": {
        "color": 4,
        "width": 415.1572200385813,
        "height": 1766.1026447605514,
        "content": "## Respond to iOS Shortcut"
      },
      "typeVersion": 1
    },
    {
      "id": "b75485ce-d365-4743-a4ee-e16799e12c24",
      "name": "Webhook - Track Time",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -20,
        260
      ],
      "webhookId": "752a7723-87b6-470f-a7d3-f627f6457e39",
      "parameters": {
        "path": "track-time",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "typeVersion": 2
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f0e95932-b61d-4fcf-a3a6-5cef415fd8fe",
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Update page with end date",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set Message - End time already tracked",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Get notion page with todays date",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set Break Duration",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Get notion page with todays date1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If page exist": {
      "main": [
        [
          {
            "node": "Set Message - Start time already tracked",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create new page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If page exist1": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set Message - Start time not yet tracked",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create new page": {
      "main": [
        [
          {
            "node": "Set Message - Start time already tracked1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If page responded": {
      "main": [
        [
          {
            "node": "If pause_in_minuten is empty",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set Message - Start not yet tracked",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Break Duration": {
      "main": [
        [
          {
            "node": "Get notion page by date",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook - Track Time": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get notion page by date": {
      "main": [
        [
          {
            "node": "If page responded",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update page with end date": {
      "main": [
        [
          {
            "node": "Set Message - End time tracked",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If pause_in_minuten is empty": {
      "main": [
        [
          {
            "node": "Set break duration for current day",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Update break duration for current day",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Message - End time tracked": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get notion page with todays date": {
      "main": [
        [
          {
            "node": "If page exist",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Message - Break time tracked": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Message - Break time updated": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get notion page with todays date1": {
      "main": [
        [
          {
            "node": "If page exist1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set break duration for current day": {
      "main": [
        [
          {
            "node": "Set Message - Break time tracked",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Message - Start not yet tracked": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update break duration for current day": {
      "main": [
        [
          {
            "node": "Set Message - Break time updated",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Message - End time already tracked": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Message - Start time already tracked": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Message - Start time not yet tracked": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Message - Start time already tracked1": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

功能特点

  • 自动检测新邮件
  • AI智能内容分析
  • 自定义分类规则
  • 批量处理能力
  • 详细的处理日志

技术分析

节点类型及作用

  • Notion
  • If
  • Set
  • Switch
  • Stickynote

复杂度评估

配置难度:
★★★★☆
维护难度:
★★☆☆☆
扩展性:
★★★★☆

实施指南

前置条件

  • 有效的Gmail账户
  • n8n平台访问权限
  • Google API凭证
  • AI分类服务订阅

配置步骤

  1. 在n8n中导入工作流JSON文件
  2. 配置Gmail节点的认证信息
  3. 设置AI分类器的API密钥
  4. 自定义分类规则和标签映射
  5. 测试工作流执行
  6. 配置定时触发器(可选)

关键参数

参数名称 默认值 说明
maxEmails 50 单次处理的最大邮件数量
confidenceThreshold 0.8 分类置信度阈值
autoLabel true 是否自动添加标签

最佳实践

优化建议

  • 定期更新AI分类模型以提高准确性
  • 根据邮件量调整处理批次大小
  • 设置合理的分类置信度阈值
  • 定期清理过期的分类规则

安全注意事项

  • 妥善保管API密钥和认证信息
  • 限制工作流的访问权限
  • 定期审查处理日志
  • 启用双因素认证保护Gmail账户

性能优化

  • 使用增量处理减少重复工作
  • 缓存频繁访问的数据
  • 并行处理多个邮件分类任务
  • 监控系统资源使用情况

故障排除

常见问题

邮件未被正确分类

检查AI分类器的置信度阈值设置,适当降低阈值或更新训练数据。

Gmail认证失败

确认Google API凭证有效且具有正确的权限范围,重新进行OAuth授权。

调试技巧

  • 启用详细日志记录查看每个步骤的执行情况
  • 使用测试邮件验证分类逻辑
  • 检查网络连接和API服务状态
  • 逐步执行工作流定位问题节点

错误处理

工作流包含以下错误处理机制:

  • 网络超时自动重试(最多3次)
  • API错误记录和告警
  • 处理失败邮件的隔离机制
  • 异常情况下的回滚操作